// Poligono.h: interface for the Poligono class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_POLIGONO1_H__13E4AE6E_4DA4_4FCE_96F7_69A4D51929AE__INCLUDED_)
#define AFX_POLIGONO1_H__13E4AE6E_4DA4_4FCE_96F7_69A4D51929AE__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "Elemento.h"
#include "Puntos.h"
#include <list>
using namespace std;

typedef std::list<Puntos> ListaPuntos;

class Poligono : public Elemento 
{
public:
	Poligono(ListaPuntos list, int c, bool rellenado);
	virtual ~Poligono();

	ListaPuntos Listado;
	bool relleno;
	
	virtual void Dibujar(Matriz m, int *cVP, CDC* pDC);

private:
	void Transformar(Matriz m);
	void redondearPtos();
	void Interseccion(Puntos s, Puntos p, Puntos vertice1, Puntos vertice2, Puntos &interseccion);
	bool Interior(Puntos p, Puntos vertice1, Puntos vertice2);
	void Recortar(ListaPuntos Lista, ListaPuntos &ListaClip, Puntos vertice1, Puntos vertice2);



};

#endif // !defined(AFX_POLIGONO1_H__13E4AE6E_4DA4_4FCE_96F7_69A4D51929AE__INCLUDED_)
